Trabalho prático 1

Compressão de imagens bmp no formato JPEG

Resultados e Conclusões

Original Ultra Hight High Medium Low Animation
Images
Quality --- 100% 75% 50% 25% 100% - 0%
Size (pixeis) 281 x 500 281 x 500 281 x 500 281 x 500 281 x 500
Size (KB) 422KB 22KB 64KB 7KB 6KB ---
Compression Rate --- 94.79% 98,10% 98.34% 98,58% ---
Original Ultra Hight High Medium Low Animation
Images
Quality --- 100% 75% 50% 25% 100% - 0%
Size (pixeis) 384 x 512 384 x 512 384 x 512 384 x 512 384 x 512
Size (KB) 577KB 142KB 24KB 16KB 11KB ---
Compression Rate --- 75.39% 95,85% 97,23% 98,09% ---
Original Ultra Hight High Medium Low Animation
Images
Quality --- 100% 75% 50% 25% 100% - 0%
Size (pixeis) 297 x 400 297 x 400 297 x 400 297 x 400 297 x 400
Size (KB) 349KB 124KB 28KB 19KB 12KB ---
Compression Rate --- 64.47% 91.98% 94.56% 96.56% ---

A imagem logo.bmp, mesmo com uma qualidade alta (75%), já apresenta uma leve distorção no contorno das figuras e, à medida que a qualidade diminui, esta distorção vai ficando cada vez mais evidente. A razão pela qual podemos verificar ruído com uma taxa de compressão alta, deve-se ao facto de existir um elevado contraste entre as tonalidades das formas e o fundo (só existem três cores com apenas uma tonalidade cada uma).

Na imagem peppers.bmp, apenas começam a ser percetíveis perturbações a partir da qualidade média (50%). A razão para tal provém da imagem conter transições mais suaves em comparação com a imagem logo.bmp.

Por fim, na imagem barn_mountains.bmp, não existe uma discrepância da qualidade visual tão saliente entre todos os níveis de compressão visto que esta tem essencialmente transições suaves. No entanto, é possível distinguir-se algumas zonas pixelizadas quando a qualidade de compressão é baixa.

De modo geral, as imagens foto-realistas, como é o caso da peppers.bmp e da barn_mountains.bmp, conseguem alcançar maiores taxas de compressão sem grande perda percetual. Estes resultados encontram-se conforme o esperado, pois sabemos que o JPEG utiliza métodos de compressão pensados para imagens foto-realistas.

Funções auxiliares usadas ao longo do código

Imagem a usar ao longo do relatório

Colormaps

Padding

Modelo YCbCr

No modelo RGB, todos os canais contém luminância. Esta redundância é eliminada no modelo YCbCr, guardando a informação sobre a luminância apenas no canal Y. Os restantes canais, Cb e Cr, guardam a informação acerca da variação de azul e vermelho, respetivamente, relativamente à luma (crominância azul e crominância vermelha). Assim sendo, nos canais Cb e Cr é visível um menor detalhe que as torna mais propícias a maiores níveis de compressão.

Sub-amostragem

A função de downsampling foi aplicada apenas aos canais Cb e Cr da imagem, dado que as alterações efetuadas nestes canais não serão tão percetíveis ao olho humano. O canal Y mantém-se inalterado para não perder o detalhe da imagem (luminância).

Rácio 4:2:0

Como se pode observar, ao usar o rácio 4:2:0, ou seja, reduzindo o número de colunas e linhas para metade (passo de 2) dos canais Cb e Cr, conseguimos comprimir estes canais para 25% do seu tamanho original.

Ao utilizar interpolação quer no downsampling, quer no upsampling, é possível verificar que a imagem final se aproxima mais da original. Enquanto, sem interpolação, a imagem final não fica tão suave, notando-se até alguns "degraus", ou seja, perda de alguma informação, especialmente na imagem logo.bmp dado que apresenta maiores contrastes.

Rácio 4:2:2

#

Como se pode observar, ao usar o rácio 4:2:2, ou seja, reduzindo o número de colunas para metade (passo de 2) dos canais Cb e Cr, conseguimos comprimir estes canais para 50% do seu tamanho original.

Ao utilizar interpolação quer no downsampling, quer no upsampling, é possível verificar que a imagem final se aproxima mais da original, apesar de, na imagem logo.bmp, por não ter muito detalhe (não é foto-realista), apresentar um contorno vermelho mais carregado em volta do círculo. Enquanto, sem interpolação, a imagem final não fica tão suave, notando-se até alguns "degraus", especialmente na imagem logo.bmp dado que apresenta maiores contrastes. É de realçar, que a imagem, quer com ou sem interpolação, apresenta a mesma taxa de compressão.

Nas imagens foto-realistas, a perda de informação das sub-amostragens não é tão notória quando comparada com o mesmo tipo de sub-amostragem em imagens gráficas vetoriais.

Comparando os rácios 4:2:0 e 4:2:2, concluí-se que, como era expetável, o rácio 4:2:0 apresenta piores resultados visualmente que o rácio 4:2:2, quer com interpolação, quer sem interpolação. Porém, essas diferenças são mínimas, apenas se distinguindo mais quando se faz zoom das imagens.

Transformada Discreta do Cosseno (DCT)

DCT aplicada a toda a imagem

Ao utilizar a DCT, há uma compactação da energia num número menor de coeficientes. Por este motivo, poderá ser usado um algoritmo de compressão entrópica (RLE, por exemplo) para eliminar a redundância que existe nas altas frequências. Para aumentar, ainda mais, a redundância nestas frequências, poderá ser usado um processo de quantização para aproximar os valores (este processo vai levar à perda de informação).

DCT aplicada em blocos

Blocos 8x8

Em blocos 8x8, existe uma menor probabilidade de encontrar transições abruptas. Deste modo, ao aplicar a DCT a estes blocos, os valores AC tendem a aproximar-se de zero enquanto o valor DC se distingue mais desses devido à ausência de frequências altas. Como os valores AC são semelhantes e próximos de zero, consegue-se comprimir mais a imagem através de métodos entrópicos que tiram partido deste aspeto.

Blocos 64x64

Aumentando o tamanho dos blocos para 64x64, verifica-se que há mais probabilidade de apanhar transições abruptas na imagem do que em blocos 8x8. Assim, haverá mais discrepâncias entre os coeficientes AC dos blocos e, consequentemente, serão mais difíceis de comprimir com modelos entrópicos.

Quantização

Pela análise dos gráficos anteriores, verifica-se que, à medida que a qualidade diminui, os valores resultantes da aplicação da quantização aproximam-se cada vez mais de preto (valor 0). É ainda de notar que, com a diminuição da qualidade, a perda de informação aumenta, dado que o resultado da quantização torna a maioria dos coeficientes AC iguais a zero, e como tal, impossíveis de recuperar. Como a redundância dos valores aumenta com a diminuição da qualidade, tornam-se todos zero ou próximos disso, a aplicação dos modelos de compressão entrópicos torna-se mais eficaz e, assim, potencial de compressão aumenta também.

Codificação DPCM dos coeficientes DC

Aos aplicar a DPCM por blocos, como estamos perante uma imagem com transições suaves, a diferença entre os coeficientes DC codificados de pixeis adjacentes irá ser perto de zero. Assim sendo, irá haver uma maior proximidade entre os valores, resultando, em termos visuais, numa menor transição entre tonalidades, contrastando com o resultado obtido na alínea anterior, após aplicar a quantização. Estes resultados irão possibilitar uma maior compressão, sobretudo ao aplicar métodos de compressão entrópica como Huffman.

Reconstrução da imagem original

Encoder e decoder

Métricas de distorção das imagens

Resultados do encoder com interpolação e racio 4:2:2

Original 100% 75% 50% 25% 10%
Images
MSE -- 14.49 152.84 261.87 398.95 706.87
RMSE -- 3.81 12.36 16.18 19.97 26.59
SNR -- 35.57 25.34 23.01 21.18 18.69
PSNR -- 36.52 26.29 23.95 22.12 19.63
Original 100% 75% 50% 25% 10%
Images
MSE -- 10.90 51.08 77.76 126.31 278.71
RMSE -- 3.20 7.15 8.82 11.23 16.69
SNR -- 34.55 27.84 26.02 23.91 20.47
PSNR -- 37.76 31.05 29.22 27.12 23.68
Original 100% 75% 50% 25% 10%
Images
MSE -- 6.70 24.28 48.41 70.86 170.45
RMSE -- 2.59 4.93 6.96 8.41 13.06
SNR -- 43.07 37.48 34.48 32.83 29.02
PSNR -- 39.87 34.28 31.28 29.63 25.81

Pela visualização das imagens das diferenças para as várias qualidades, podemos verificar que existe uma maior perda de informação nas qualidades inferiores. Esta perda diminui à medida que aumentamos a qualidade da quantização. Na imagem descodificada com qualidade 75 não conseguimos visualizar nenhuma perda percetual, e que, na imagem das diferenças, a perda é quase nula. Com uma qualidade de 50, já dá para visualizar melhor essa perda, dá para ver algum ruído nos contornos das imagens. Principalmente no logo já dá para ver umas falhas interior do círculo vermelho e na faixa azul, perto do contorno.